package com.zb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zb.entity.SelectEmpVo;
import com.zb.entity.SelectVo;
import com.zb.entity.ZjAccount;
import com.zb.entity.ZjEmp;
import com.zb.vo.EmpSelectVo;
import com.zb.vo.EmpVo;
import com.zb.vo.EmpsVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 商家账号人员组织表 Mapper 接口
 * </p>
 *
 * @author WEN
 * @since 2023-07-18
 */
@Repository
public interface ZjEmpMapper extends BaseMapper<ZjEmp> {

    /**
     * 更改组织人员在职状态
     * @param idList 人员ID集合
     * @param depart 是否离职：false-在职，true-离职
     * @return
     */
    int updateEmpDepartBatchByIds(@Param("ids") List<Long> idList, @Param("depart") boolean depart);

    /**
     * 根据组织ID删除组织人员
     * @param organizeId 组织ID
     * @return
     */
    int deleteByOrganizeId(Long organizeId);


    /**
     * 根据[商家ID]&[账号ID]查询
     * @param custAccId 商家ID
     * @param accountId 账号ID
     * @return
     */
    ZjEmp getByCustAccIdAndAccountId(@Param("custAccId") Long custAccId, @Param("accountId") Long accountId);

    /**
     * 查询组织人员总数
     * @param empSelectVo
     * @return
     */
    Long getTotalPage(EmpSelectVo empSelectVo);

    /**
     * 分页查询组织人员
     * @param empSelectVo
     * @return
     */
    List<EmpsVo> getPage(EmpSelectVo empSelectVo);


    /**
     * 根据人员ID集合查询人员ID集合中是否存在账号超管
     * @param ids 人员ID集合
     * @return
     */
    Integer existSuperAccountByIdList(@Param("ids") List<Long> ids);


    /**
     * 根据商家ID获取系统超管的手机号
     * @param custAccId 商家ID
     * @return
     */
    String getSuperAccountByCustAccId(Long custAccId);

    /**
     * 根据账号ID获取账号下的所有商家ID集合
     * @param accountId 账号ID
     * @return
     */
    List<Long> getCustAccIdByAccountId(Long accountId);

    /**
     * 检查该账号是否已经加入公司
     * @param custAccId 商家ID
     * @param id 人员ID
     * @param accountId 账号ID
     * @return
     */
    Integer existJoinByCustAccIdAndAccountId(@Param("custAccId") Long custAccId, @Param("id") Long id, @Param("accountId") Long accountId);

    /**
     * 企业人员下拉数据列表
     * @param custAccId 商家ID
     * @param selectVo
     * @return
     */
    List<SelectEmpVo> pageEmpSelecct(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 企业人员下拉数据列表总记录数
     * @param custAccId 商家ID
     * @param selectVo
     * @return
     */
    long pageEmpSelecctCount(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 根据职员ID查询职员信息
     * @param id
     * @return
     */
    EmpVo getById(Long id);

    /**
     * 根据人员ID获取人员姓名
     * @param id 人员ID
     * @return
     */
    String getNameById(@Param("id") Long id);

    /**
     * 根据商家ID获取所有账号人员
     * @param custAccId 商家ID
     * @return
     */
    List<ZjAccount> getByCustAccId(@Param("custAccId") Long custAccId);

    /**
     * 查询是否与工单关联
     * @param empIdList 人员ID
     * @return
     */
    Integer isRelationOrderServiceByEmpId(@Param("empIds") List<Long> empIdList);

}
